var divide = function (dividend, divisor) {
  if (divisor === 0) return Infinity // 如果除数是0 就返回无穷
  if (dividend === 0) return 0 // 如果被除数是0 就返回0
  if (dividend === -2147483648 && divisor === -1) return 2147483647 // 如果移除就返回-1的值

  let res = 0 // 设置结果是0
  let flag = '' // 设置符号
  if ((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0)) {
    flag = '-' // 如果两个符号不同就设置符号为-号
  }
  dividend = Math.abs(dividend)
  divisor = Math.abs(divisor) // 两个数字取绝对值

  while (dividend >= divisor) {
    // 当被除数大于除数的时候
    let temp = divisor, // 保存除数
      m = 1 // 设置m为1
    while (temp <= dividend >> 1) {
      // dividend >> 1被除数除以2 当这个除数小于等于被除数除以二的时候
      // 位运算模拟乘法，撑到最大。防止溢出
      temp <<= 1 // 除数
      m <<= 1
    }
    dividend -= temp
    res += m
  }

  return parseInt(flag + res)
}
